{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.spatial.transform import Rotation as R\n",
    "from astropy import coordinates as ac\n",
    "import copy\n",
    "import torch\n",
    "\n",
    "import os \n",
    "from os.path import join, split,exists, isdir,isfile\n",
    "\n",
    "file_root =  join(os.getcwd(),'..')\n",
    "os.chdir(file_root)\n",
    "\n",
    "from utils.pc_utils import *\n",
    "from utils import * \n",
    "\n",
    "\n",
    "from utils.utils import * \n",
    "import numpy as np \n",
    "\n",
    "\n",
    "from entity.prediction_loader import PredictionLoader\n",
    "\n",
    "from entity.semantic_kitti_gt_loader import SementicKittiGtLoader\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_path = \"/data1/liyang/semantic_kitti_api-master/datasets/analyze\"\n",
    "\n",
    "ID_score = join(data_path,'scores_softmax_3dummy_base_in.score')\n",
    "OOD_score = join(data_path,'scores_softmax_3dummy_base_ood.score')\n",
    "\n",
    "\n",
    "id_distribution = np.fromfile(ID_score,dtype=np.float32)\n",
    "ood_distribution = np.fromfile(OOD_score,dtype=np.float32)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((474535455,), 0.9997973, 1.2397463e-11)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "id_distribution.shape,id_distribution.max(),id_distribution.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((10347950,), 0.9999919, 9.947155e-08)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ood_distribution.shape,ood_distribution.max(),ood_distribution.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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sGDBOR/FoX0xz52Dee4czHPnYa47x+Uwzz3+e4QAAADOp0ffIwQAAHAhBCEAAGAtghAAALAWQQgAAFiLINSBCgoKNHjwYEVHRysjI0Pbt2+/YP3KlSs1YsQIRUdHa8yYMVq7dm0nddq9hTPPr7/+um699VYlJCQoISFBmZmZF/33gr8I9/e52fLlyxUREaGJEyd2bIM9RLjzXFNTo+zsbA0cOFBut1vXXnst/+9og3Dn+aWXXtLw4cMVExOj1NRUzZkzR2fOnOmkbrunzZs365577lFKSooiIiL03nvvXfSYjRs36oYbbpDb7dawYcNUWFjY4X326L811pWWL19uXC6X+bd/+zezZ88e8/jjj5v4+HhTXV3dav3HH39soqKizOLFi83evXvNr3/9a9O7d2+za9euTu68ewl3nh9++GFTUFBgdu7cafbt22d++ctfmri4OPPVV191cufdS7jz3KyystJcddVV5tZbbzX33ntv5zTbjYU7z7W1tebGG280P//5z81HH31kKisrzcaNG015eXknd969hDvPb731lnG73eatt94ylZWVZt26dWbgwIFmzpw5ndx597J27Vrz7LPPmnfffddIMqtWrbpg/cGDB01sbKzJyckxe/fuNUuWLDFRUVGmqKioQ/skCHWQ8ePHm+zsbGe9sbHRpKSkmPz8/FbrH3zwQZOVlRWyLSMjwzzxxBMd2md3F+48n62hocH07dvXLFu2rKNa7BEuZZ4bGhrMT3/6U/PGG2+YqVOnEoTaINx5Xrp0qRk6dKipq6vrrBZ7hHDnOTs72/zsZz8L2ZaTk2NuvvnmDu2zJ2lLEHrmmWfMqFGjQrZNmjTJ+Hy+DuzMGD4a6wB1dXUqKytTZmamsy0yMlKZmZkqLS1t9ZjS0tKQekny+XznrcelzfPZTp06pfr6evXr16+j2uz2LnWen3/+eSUmJmratGmd0Wa3dynz/P7778vr9So7O1tJSUkaPXq0fve736mxsbGz2u52LmWef/rTn6qsrMz5+OzgwYNau3atfv7zn3dKz7boqvNgj/9m6a7w7bffqrGx8Zxvr05KStL+/ftbPcbv97da7/f7O6zP7u5S5vlsc+fOVUpKyjn/8eH/u5R5/uijj/Sv//qvKi8v74QOe4ZLmeeDBw9q/fr1mjJlitauXasDBw7oySefVH19vRYsWNAZbXc7lzLPDz/8sL799lvdcsstMsaooaFBM2bM0D/8wz90RsvWON95MBgM6vTp04qJiemQ1+WKEKy1aNEiLV++XKtWrVJ0dHRXt9NjHD9+XI888ohef/119e/fv6vb6dGampqUmJio1157Tenp6Zo0aZKeffZZvfrqq13dWo+yceNG/e53v9Mrr7yiTz/9VO+++67WrFmj3/72t13dGtoBV4Q6QP/+/RUVFaXq6uqQ7dXV1UpOTm71mOTk5LDqcWnz3Oz3v/+9Fi1apP/+7//W9ddf35FtdnvhzvOXX36pQ4cO6Z577nG2NTU1SZJ69eqliooKXXPNNR3bdDd0Kb/PAwcOVO/evRUVFeVsu+666+T3+1VXVyeXy9WhPXdHlzLPzz33nB555BE99thjkqQxY8bo5MmTmj59up599llFRnJNoT2c7zzo8Xg67GqQxBWhDuFyuZSenq6SkhJnW1NTk0pKSuT1els9xuv1htRLUnFx8XnrcWnzLEmLFy/Wb3/7WxUVFenGG2/sjFa7tXDnecSIEdq1a5fKy8ud5W/+5m90xx13qLy8XKmpqZ3ZfrdxKb/PN998sw4cOOAETUn6n//5Hw0cOJAQdB6XMs+nTp06J+w0h0/Dn+tsN112HuzQW7Ettnz5cuN2u01hYaHZu3evmT59uomPjzd+v98YY8wjjzxi5s2b59R//PHHplevXub3v/+92bdvn1mwYAGPz7dBuPO8aNEi43K5zH/+53+ao0ePOsvx48e76i10C+HO89l4aqxtwp3nqqoq07dvXzNr1ixTUVFhVq9ebRITE80LL7zQVW+hWwh3nhcsWGD69u1r3n77bXPw4EHz5z//2VxzzTXmwQcf7Kq30C0cP37c7Ny50+zcudNIMv/8z/9sdu7caf73f//XGGPMvHnzzCOPPOLUNz8+n5uba/bt22cKCgp4fL67W7JkiUlLSzMul8uMHz/ebN261dl3++23m6lTp4bUv/POO+baa681LpfLjBo1yqxZs6aTO+6ewpnnQYMGGUnnLAsWLOj8xruZcH+fWyIItV2487xlyxaTkZFh3G63GTp0qPnHf/xH09DQ0Mlddz/hzHN9fb1ZuHChueaaa0x0dLRJTU01Tz75pPnhhx86v/FuZMOGDa3+/7Z5bqdOnWpuv/32c44ZN26ccblcZujQoebNN9/s8D4jjOG6HgAAsBP3CAEAAGsRhAAAgLUIQgAAwFoEIQAAYC2CEAAAsBZBCAAAWIsgBAAArEUQAgAA1iIIAQAAaxGEAACAtQhCAADAWgQhAABgrf8HLH6lunGQHqoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 绘制直方图\n",
    "# plt.hist(ood_distribution, bins=100)\n",
    "plt.hist(ood_distribution, bins=1000)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcNklEQVR4nO3dbWyV5f3A8V8LttVoC47RCuv+dc6HORUYSFc3Ylw6O8eYJFtG0AgjqNM45+zMBKfUh83ioq7LxBFRo28MqJnGCMNoJzHOTiZIovMpPjCY2gIja7G4Vtr7/8JYV2mxB2kvWz+f5LzozXWd8zu3SL+5zzltXpZlWQAAJJKfegAA4LNNjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFKjUw8wEN3d3fHWW2/FYYcdFnl5eanHAQAGIMuy2LVrV0yYMCHy8/u//jEsYuStt96K8vLy1GMAAPth69at8YUvfKHfPx8WMXLYYYdFxPtPpri4OPE0AMBAtLW1RXl5ec/38f4Mixj54KWZ4uJiMQIAw8zHvcXCG1gBgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkFTOMfLEE0/ErFmzYsKECZGXlxcPPvjgx+5Zt25dfO1rX4vCwsL48pe/HHfdddd+jAoAjEQ5x0h7e3tMmjQpli1bNqD1b7zxRsycOTNOO+202LRpU/z85z+Pc889Nx555JGchwUARp6cf1HeGWecEWecccaA1y9fvjyOPPLIuOmmmyIi4itf+Uo8+eST8bvf/S5qampyfXgAYIQZ9PeMNDU1RXV1da9jNTU10dTU1O+ejo6OaGtr63UDAEamnK+M5Kq5uTlKS0t7HSstLY22trZ499134+CDD95rT319fVxzzTWDPRrwKVGxaHWvrzcvnZloEiCFT+WnaRYvXhytra09t61bt6YeCQAYJIN+ZaSsrCxaWlp6HWtpaYni4uI+r4pERBQWFkZhYeFgjwYAfAoM+pWRqqqqaGxs7HXs0UcfjaqqqsF+aABgGMg5Rt55553YtGlTbNq0KSLe/+jupk2bYsuWLRHx/kss8+bN61l/wQUXxOuvvx6//OUv46WXXopbb7017r333rj00ksPzDMAAIa1nGPkmWeeiSlTpsSUKVMiIqK2tjamTJkSS5YsiYiIt99+uydMIiKOPPLIWL16dTz66KMxadKkuOmmm+L222/3sV4AICIi8rIsy1IP8XHa2tqipKQkWltbo7i4OPU4wAHm0zQwMg30+/en8tM0AMBnhxgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABIar9iZNmyZVFRURFFRUVRWVkZ69ev3+f6hoaGOPbYY+Pggw+O8vLyuPTSS+O///3vfg0MAIwsOcfIqlWrora2Nurq6mLjxo0xadKkqKmpiW3btvW5/p577olFixZFXV1dvPjii3HHHXfEqlWr4oorrvjEwwMAw1/OMXLzzTfHeeedFwsWLIjjjz8+li9fHoccckjceeedfa5/6qmn4hvf+EacddZZUVFREaeffnrMnTv3Y6+mAACfDTnFSGdnZ2zYsCGqq6s/vIP8/Kiuro6mpqY+95xyyimxYcOGnvh4/fXXY82aNfHd736338fp6OiItra2XjcAYGQancviHTt2RFdXV5SWlvY6XlpaGi+99FKfe84666zYsWNHfPOb34wsy2LPnj1xwQUX7PNlmvr6+rjmmmtyGQ0AGKYG/dM069ati+uvvz5uvfXW2LhxY/zpT3+K1atXx3XXXdfvnsWLF0dra2vPbevWrYM9JgCQSE5XRsaNGxejRo2KlpaWXsdbWlqirKyszz1XXXVVnHPOOXHuuedGRMSJJ54Y7e3tcf7558evfvWryM/fu4cKCwujsLAwl9EAgGEqpysjBQUFMXXq1GhsbOw51t3dHY2NjVFVVdXnnt27d+8VHKNGjYqIiCzLcp0XABhhcroyEhFRW1sb8+fPj2nTpsX06dOjoaEh2tvbY8GCBRERMW/evJg4cWLU19dHRMSsWbPi5ptvjilTpkRlZWW8+uqrcdVVV8WsWbN6ogQA+OzKOUbmzJkT27dvjyVLlkRzc3NMnjw51q5d2/Om1i1btvS6EnLllVdGXl5eXHnllfHmm2/G5z//+Zg1a1b85je/OXDPAgAYtvKyYfBaSVtbW5SUlERra2sUFxenHgc4wCoWre719ealMxNNAhxIA/3+7XfTAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJLVfMbJs2bKoqKiIoqKiqKysjPXr1+9z/X/+85+46KKL4ogjjojCwsI45phjYs2aNfs1MAAwsozOdcOqVauitrY2li9fHpWVldHQ0BA1NTXx8ssvx/jx4/da39nZGd/+9rdj/Pjxcf/998fEiRPjn//8Z4wZM+ZAzA8ADHM5x8jNN98c5513XixYsCAiIpYvXx6rV6+OO++8MxYtWrTX+jvvvDN27twZTz31VBx00EEREVFRUfHJpgYARoycXqbp7OyMDRs2RHV19Yd3kJ8f1dXV0dTU1Oeehx56KKqqquKiiy6K0tLSOOGEE+L666+Prq6ufh+no6Mj2traet0AgJEppxjZsWNHdHV1RWlpaa/jpaWl0dzc3Oee119/Pe6///7o6uqKNWvWxFVXXRU33XRT/PrXv+73cerr66OkpKTnVl5ensuYAMAwMuifpunu7o7x48fHbbfdFlOnTo05c+bEr371q1i+fHm/exYvXhytra09t61btw72mABAIjm9Z2TcuHExatSoaGlp6XW8paUlysrK+txzxBFHxEEHHRSjRo3qOfaVr3wlmpubo7OzMwoKCvbaU1hYGIWFhbmMBgAMUzldGSkoKIipU6dGY2Njz7Hu7u5obGyMqqqqPvd84xvfiFdffTW6u7t7jr3yyitxxBFH9BkiAMBnS84v09TW1saKFSvi7rvvjhdffDEuvPDCaG9v7/l0zbx582Lx4sU96y+88MLYuXNnXHLJJfHKK6/E6tWr4/rrr4+LLrrowD0LAGDYyvmjvXPmzInt27fHkiVLorm5OSZPnhxr167teVPrli1bIj//w8YpLy+PRx55JC699NI46aSTYuLEiXHJJZfE5ZdffuCeBQAwbOVlWZalHuLjtLW1RUlJSbS2tkZxcXHqcYADrGLR6l5fb146M9EkwIE00O/ffjcNAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUvsVI8uWLYuKioooKiqKysrKWL9+/YD2rVy5MvLy8mL27Nn787AAwAiUc4ysWrUqamtro66uLjZu3BiTJk2Kmpqa2LZt2z73bd68OS677LKYMWPGfg8LAIw8OcfIzTffHOedd14sWLAgjj/++Fi+fHkccsghceedd/a7p6urK84+++y45ppr4ktf+tInGhgAGFlyipHOzs7YsGFDVFdXf3gH+flRXV0dTU1N/e679tprY/z48bFw4cIBPU5HR0e0tbX1ugEAI1NOMbJjx47o6uqK0tLSXsdLS0ujubm5zz1PPvlk3HHHHbFixYoBP059fX2UlJT03MrLy3MZEwAYRgb10zS7du2Kc845J1asWBHjxo0b8L7FixdHa2trz23r1q2DOCUAkNLoXBaPGzcuRo0aFS0tLb2Ot7S0RFlZ2V7rX3vttdi8eXPMmjWr51h3d/f7Dzx6dLz88stx1FFH7bWvsLAwCgsLcxkNABimcroyUlBQEFOnTo3GxsaeY93d3dHY2BhVVVV7rT/uuOPiueeei02bNvXcvv/978dpp50WmzZt8vILAJDblZGIiNra2pg/f35MmzYtpk+fHg0NDdHe3h4LFiyIiIh58+bFxIkTo76+PoqKiuKEE07otX/MmDEREXsdBwA+m3KOkTlz5sT27dtjyZIl0dzcHJMnT461a9f2vKl1y5YtkZ/vB7sCAAOTl2VZlnqIj9PW1hYlJSXR2toaxcXFqccBDrCKRat7fb156cxEkwAH0kC/f7uEAQAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCS2q8YWbZsWVRUVERRUVFUVlbG+vXr+127YsWKmDFjRowdOzbGjh0b1dXV+1wPAHy25Bwjq1atitra2qirq4uNGzfGpEmToqamJrZt29bn+nXr1sXcuXPj8ccfj6ampigvL4/TTz893nzzzU88PAAw/OVlWZblsqGysjJOPvnkuOWWWyIioru7O8rLy+Piiy+ORYsWfez+rq6uGDt2bNxyyy0xb968AT1mW1tblJSURGtraxQXF+cyLjAMVCxa3evrzUtnJpoEOJAG+v07pysjnZ2dsWHDhqiurv7wDvLzo7q6OpqamgZ0H7t374733nsvDj/88H7XdHR0RFtbW68bADAy5RQjO3bsiK6urigtLe11vLS0NJqbmwd0H5dffnlMmDChV9B8VH19fZSUlPTcysvLcxkTABhGhvTTNEuXLo2VK1fGAw88EEVFRf2uW7x4cbS2tvbctm7dOoRTAgBDaXQui8eNGxejRo2KlpaWXsdbWlqirKxsn3tvvPHGWLp0aTz22GNx0kkn7XNtYWFhFBYW5jIaADBM5XRlpKCgIKZOnRqNjY09x7q7u6OxsTGqqqr63ffb3/42rrvuuli7dm1MmzZt/6cFAEacnK6MRETU1tbG/PnzY9q0aTF9+vRoaGiI9vb2WLBgQUREzJs3LyZOnBj19fUREXHDDTfEkiVL4p577omKioqe95Yceuihceihhx7ApwIADEc5x8icOXNi+/btsWTJkmhubo7JkyfH2rVre97UumXLlsjP//CCyx//+Mfo7OyMH/7wh73up66uLq6++upPNj0AMOzl/HNGUvBzRmBk83NGYGQalJ8zAgBwoIkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACS1XzGybNmyqKioiKKioqisrIz169fvc/19990Xxx13XBQVFcWJJ54Ya9as2a9hAYCRJ+cYWbVqVdTW1kZdXV1s3LgxJk2aFDU1NbFt27Y+1z/11FMxd+7cWLhwYTz77LMxe/bsmD17djz//POfeHgAYPjLy7Isy2VDZWVlnHzyyXHLLbdERER3d3eUl5fHxRdfHIsWLdpr/Zw5c6K9vT0efvjhnmNf//rXY/LkybF8+fIBPWZbW1uUlJREa2trFBcX5zIuMAxULFrd6+vNS2cmmgQ4kAb6/Xt0Lnfa2dkZGzZsiMWLF/ccy8/Pj+rq6mhqaupzT1NTU9TW1vY6VlNTEw8++GC/j9PR0REdHR09X7e2tkbE+08KGHm6O3b3+tr/6zAyfPD/8sdd98gpRnbs2BFdXV1RWlra63hpaWm89NJLfe5pbm7uc31zc3O/j1NfXx/XXHPNXsfLy8tzGRcYpkoaUk8AHEi7du2KkpKSfv88pxgZKosXL+51NaW7uzt27twZn/vc5yIvLy/hZEOjra0tysvLY+vWrV6WGkTO89BwnoeG8zw0nOfcZFkWu3btigkTJuxzXU4xMm7cuBg1alS0tLT0Ot7S0hJlZWV97ikrK8tpfUREYWFhFBYW9jo2ZsyYXEYdEYqLi/1lHwLO89BwnoeG8zw0nOeB29cVkQ/k9GmagoKCmDp1ajQ2NvYc6+7ujsbGxqiqqupzT1VVVa/1ERGPPvpov+sBgM+WnF+mqa2tjfnz58e0adNi+vTp0dDQEO3t7bFgwYKIiJg3b15MnDgx6uvrIyLikksuiVNPPTVuuummmDlzZqxcuTKeeeaZuO222w7sMwEAhqWcY2TOnDmxffv2WLJkSTQ3N8fkyZNj7dq1PW9S3bJlS+Tnf3jB5ZRTTol77rknrrzyyrjiiivi6KOPjgcffDBOOOGEA/csRpjCwsKoq6vb66UqDizneWg4z0PDeR4azvPgyPnnjAAAHEh+Nw0AkJQYAQCSEiMAQFJiBABISox8CuzcuTPOPvvsKC4ujjFjxsTChQvjnXfeGdDeLMvijDPOiLy8vH3+vh/el+u53rlzZ1x88cVx7LHHxsEHHxxf/OIX42c/+1nP70vifcuWLYuKioooKiqKysrKWL9+/T7X33fffXHcccdFUVFRnHjiibFmzZohmnR4y+U8r1ixImbMmBFjx46NsWPHRnV19cf+d+F9uf59/sDKlSsjLy8vZs+ePbgDjkBi5FPg7LPPjn/84x/x6KOPxsMPPxxPPPFEnH/++QPa29DQ8Jn4EfkHSq7n+q233oq33norbrzxxnj++efjrrvuirVr18bChQuHcOpPt1WrVkVtbW3U1dXFxo0bY9KkSVFTUxPbtm3rc/1TTz0Vc+fOjYULF8azzz4bs2fPjtmzZ8fzzz8/xJMPL7me53Xr1sXcuXPj8ccfj6ampigvL4/TTz893nzzzSGefHjJ9Tx/YPPmzXHZZZfFjBkzhmjSESYjqRdeeCGLiOzvf/97z7E///nPWV5eXvbmm2/uc++zzz6bTZw4MXv77beziMgeeOCBQZ52ePsk5/p/3XvvvVlBQUH23nvvDcaYw8706dOziy66qOfrrq6ubMKECVl9fX2f63/0ox9lM2fO7HWssrIy+8lPfjKocw53uZ7nj9qzZ0922GGHZXffffdgjTgi7M953rNnT3bKKadkt99+ezZ//vzszDPPHIJJRxZXRhJramqKMWPGxLRp03qOVVdXR35+fjz99NP97tu9e3ecddZZsWzZsn3+nh8+tL/n+qNaW1ujuLg4Ro/+VP6eySHV2dkZGzZsiOrq6p5j+fn5UV1dHU1NTX3uaWpq6rU+IqKmpqbf9ezfef6o3bt3x3vvvReHH374YI057O3veb722mtj/Pjxrph+Av41Tay5uTnGjx/f69jo0aPj8MMPj+bm5n73XXrppXHKKafEmWeeOdgjjhj7e67/144dO+K6664b8MtoI92OHTuiq6ur5ycwf6C0tDReeumlPvc0Nzf3uX6g/w0+i/bnPH/U5ZdfHhMmTNgrBPnQ/pznJ598Mu64447YtGnTEEw4crkyMkgWLVoUeXl5+7wN9B+Rj3rooYfiL3/5SzQ0NBzYoYepwTzX/6utrS1mzpwZxx9/fFx99dWffHAYIkuXLo2VK1fGAw88EEVFRanHGTF27doV55xzTqxYsSLGjRuXepxhzZWRQfKLX/wifvzjH+9zzZe+9KUoKyvb641Re/bsiZ07d/b78stf/vKXeO2112LMmDG9jv/gBz+IGTNmxLp16z7B5MPPYJ7rD+zatSu+853vxGGHHRYPPPBAHHTQQZ907BFh3LhxMWrUqGhpael1vKWlpd9zWlZWltN69u88f+DGG2+MpUuXxmOPPRYnnXTSYI457OV6nl977bXYvHlzzJo1q+dYd3d3RLx/1fXll1+Oo446anCHHilSv2nls+6DN1U+88wzPcceeeSRfb6p8u23386ee+65XreIyH7/+99nr7/++lCNPuzsz7nOsixrbW3Nvv71r2ennnpq1t7ePhSjDivTp0/PfvrTn/Z83dXVlU2cOHGfb2D93ve+1+tYVVWVN7B+jFzPc5Zl2Q033JAVFxdnTU1NQzHiiJDLeX733Xf3+rf4zDPPzL71rW9lzz33XNbR0TGUow9rYuRT4Dvf+U42ZcqU7Omnn86efPLJ7Oijj87mzp3b8+f/+te/smOPPTZ7+umn+72P8GmaAcn1XLe2tmaVlZXZiSeemL366qvZ22+/3XPbs2dPqqfxqbJy5cqssLAwu+uuu7IXXnghO//887MxY8Zkzc3NWZZl2TnnnJMtWrSoZ/1f//rXbPTo0dmNN96Yvfjii1ldXV120EEHZc8991yqpzAs5Hqely5dmhUUFGT3339/r7+3u3btSvUUhoVcz/NH+TTN/hEjnwL//ve/s7lz52aHHnpoVlxcnC1YsKDXPxhvvPFGFhHZ448/3u99iJGByfVcP/7441lE9Hl744030jyJT6E//OEP2Re/+MWsoKAgmz59eva3v/2t589OPfXUbP78+b3W33vvvdkxxxyTFRQUZF/96lez1atXD/HEw1Mu5/n//u//+vx7W1dXN/SDDzO5/n3+X2Jk/+RlWZYN9UtDAAAf8GkaACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJDU/wO5OGligCjHcwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plt.hist(id_distribution, bins=100,orientation='horizontal')\n",
    "plt.hist(id_distribution, bins=100,orientation='vertical')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "yang_real",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
